<template>
  <div class="person">
    <h1>情况一：监视【ref】定义的【基本类型】数据</h1>
    <h2>当前求和为：{{ sum }}</h2>
    <button @click="changeSum">点我加1</button>
  </div>
  
</template>



<script lang="ts" setup name="Person">
import {ref, watch} from 'vue'

/**
 * watch
 * 作用：监视数据的变化（和vue2中的watch作用一致）
 * 特点：Vue3中的watch只能监视以下四种数据：
 * 1、ref定义的数据；
 * 2、reactive定义的数据；
 * 3、函数返回一个值（getter函数）；
 * 4、一个包含上述内容的数组。
 */

 let sum = ref(0)

 function changeSum() {
  sum.value += 1
 }

 // 监视，情况一：监视【ref】定义的【基本类型】数据
 const stopWatch = watch(sum, (newVal, oldVal) => {
  // 绝对不用this，就可以用箭头函数
  console.log('sum值发生变化了，新值为：', newVal, '，旧值为：', oldVal)
  // 停止监视
  if (newVal >= 10) {
    stopWatch()
  }
 })
 console.log('watchId:', stopWatch)

</script>

<style scoped>
.person {
  background-color: skyblue;
  box-shadow: 0 0 10px;
  border-radius: 10px;
  padding: 20px
}

button {
  margin: 0 5px;
}
li {
  font-size: 20px;
}
</style>